package com.huanf.write.smallData;

import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.joda.time.DateTime;
import org.junit.jupiter.api.Test;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author: 35238
 * 功能: 写Excel，xlsx格式的表格，也就是07版本的表格
 * 时间: 2023-12-21 21:56
 */
@Slf4j
public class Xlsx07Writer {

    //保存表格的位置。为了方便写的是项目路径
    String PATH = "E:\\桌面\\Java-Ready\\conf\\Excel\\";

    @Test
    //xlsx格式的07版本统计表，相对比03版本统计表，这里只修改了实现类为XSSFWorkbook，其它都没改
    void Xlsx() throws IOException {

        Workbook workbook = new XSSFWorkbook();//创建一个表格
        Sheet sheet = workbook.createSheet("xlsx统计表");//创建一个工作表，就是左下角的sheet1、sheet2、sheet3

        //--------------------------------------创建第一行并填充数据-----------------------------------------

        //创建第一行并填充数据
        Row row1 = sheet.createRow(0);
        Cell cell1 = row1.createCell(0);
        //往刚刚创建出的格子(第一行第一列，也就是第一格)写入值
        cell1.setCellValue("今日新增数量");

        //创建出第二个格子(第一行,第二列)
        Cell cell2 = row1.createCell(1);
        cell2.setCellValue("所属平台");

        //创建出第三个格子(第一行,第三列)
        Cell cell3 = row1.createCell(2);
        cell3.setCellValue("时间");

        //--------------------------------------创建第二行并填充数据-----------------------------------------

        Row row2 = sheet.createRow(1); //第二行
        Cell cell11 = row2.createCell(0); //第二行第一列
        cell11.setCellValue("99");
        Cell cell22 = row2.createCell(1);//第二行第二列
        cell22.setCellValue("哔哩哔哩");
        Cell cell33 = row2.createCell(2);//第二行第三列
        cell33.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));

        //--------------------------------------创建第三行并填充数据-----------------------------------------

        Row row3 = sheet.createRow(2); //第三行
        Cell cell111 = row3.createCell(0); //第三行第一列
        cell111.setCellValue("120");
        Cell cell222 = row3.createCell(1);//第三行第二列
        cell222.setCellValue("阿里巴巴");
        Cell cell333 = row3.createCell(2);//第三行第三列
        cell333.setCellValue(new DateTime().toString("yyyy-MM-dd HH:mm:ss"));

        //-----------------------------------------生成一张表----------------------------------------------

        /**
         * 由于是07版本实现类(XSSFWorkbook)创建出来的表，所以文件名尾缀必须是xlsx
         */
        FileOutputStream xxfileOutputStream = new FileOutputStream(PATH + "xlsx格式的07版本统计表.xlsx");
        workbook.write(xxfileOutputStream);
        xxfileOutputStream.close();
        log.info("xlsx格式的07版本统计表 生成完毕");
    }

}
